import Request from './request'
import {
	BASE_URL
} from '../baseUrl.js'

const getTokenStorage = () => {
	let token = ''
	try {
		token = uni.getStorageSync('ACCESS_TOKEN')
	} catch (e) {
		//TODO handle the exception
	}
	return token
}
const getUserId = () => {
	let user_id = ''
	try{
		user_id = uni.getStorageSync('userInfo').id
	}catch(e){
		//TODO handle the exception
	}
	return user_id
}

const http = new Request()

/* 设置全局配置 */
http.setConfig((config) => {
	config.baseUrl = BASE_URL
	config.header = {
		...config.header,
		'client-id': 'app_erp',
	}
	return config
})

/**
 * 自定义验证器，如果返回true 则进入响应拦截器的响应成功函数(resolve)，否则进入响应拦截器的响应错误函数(reject)
 * @param { Number } statusCode - 请求响应体statusCode（只读）
 * @return { Boolean } 如果为true,则 resolve, 否则 reject
 */
http.validateStatus = (statusCode) => {
	return statusCode === 200
}

/* 请求之前拦截器 */
http.interceptor.request((config, cancel) => {
	config.header = {
		...config.header,
		'Authorization': getTokenStorage(),
		'client-id': 'app_erp',
		// 'user-id': getUserId()
	}
	return config
})

/* 请求之后拦截器 */
http.interceptor.response((response) => {
	const {
		statusCode,
		data
	} = response
	
	return data
	// if (statusCode === 200) {
	// 	const {
	// 		message,
	// 		code
	// 	} = data
	// 	if (code == 200 || code == 0) {
	// 		uni.hideLoading();
	// 		return data
	// 	} else if (data.code == 500 && data.message == "Token失效，请重新登录") {
	// 		uni.hideLoading();
	// 		//清空存储数据重新刷新页面
	// 		uni.removeStorageSync('ACCESS_TOKEN');
	// 	} else {
	// 		uni.showToast({
	// 			title: data.message,
	// 			icon: 'none'
	// 		})
	// 		uni.hideLoading();
	// 		return Promise.reject(data)
	// 	}
	// } else {
	// 	uni.showToast({
	// 		title: data.message,
	// 		icon: 'none'
	// 	})
	// 	uni.hideLoading();
	// 	return Promise.reject(data)
	// }
}, error => {
	uni.hideLoading();
	if ((error.data && error.data.message == "Token失效，请重新登录")  || (error.statusCode && error.statusCode === 401)) {
		// uni.showToast({
		// 	title: '登录已过期',
		// 	icon: 'none'
		// })
		// uni.showModal({
		// 	title: '登录过期',
		// 	content: '登录已过期，请重新登录',
		// 	showCancel: false,
		// 	success: (res) => {
		// 		if (res.confirm) {
		// 			uni.reLaunch({
		// 				url: '/pages/login/login'
		// 			})
		// 		}
		// 	}
		// });
		uni.reLaunch({
			url: '/pages/login/login'
		})
		//清空存储数据重新刷新页面
		uni.removeStorageSync('ACCESS_TOKEN');
	} else {
		uni.hideLoading();
		uni.showToast({
			title: error.data.message,
			icon: 'none'
		})
	}
	return Promise.reject(error)
})

export default http
